Tests passing again
authorYehuda Katz <wycats@gmail.com>
Thu, 29 May 2014 21:31:09 +0000 (14:31 -0700)
committerYehuda Katz <wycats@gmail.com>
Thu, 29 May 2014 21:31:09 +0000 (14:31 -0700)
src/cargo/core/package.rs
src/cargo/ops/cargo_rustc.rs
src/cargo/sources/path.rs
tests/support.rs
tests/test_cargo_compile.rs

index bc8064ef86c4d95eb5cd4bd340a82fefac8242be..ad1f7b85264b17fd4bdadb55c92d2f58b4bc2fe3 100644 (file)
@@ -2,7 +2,9 @@ use std::slice;
 use std::fmt;
 use std::fmt::{Show,Formatter};
 use std::path::Path;
+use semver::Version;
 use core::{
+    NameVer,
     Dependency,
     Manifest,
     Registry,
@@ -72,6 +74,10 @@ impl Package {
         self.get_manifest().get_name()
     }
 
+    pub fn get_version<'a>(&'a self) -> &'a Version {
+        self.get_manifest().get_version()
+    }
+
     pub fn get_dependencies<'a>(&'a self) -> &'a [Dependency] {
         self.get_manifest().get_dependencies()
     }
@@ -91,6 +97,10 @@ impl Package {
     pub fn get_absolute_target_dir(&self) -> Path {
         self.get_root().join(self.get_target_dir())
     }
+
+    pub fn is_for_name_ver(&self, name_ver: &NameVer) -> bool {
+        self.get_name() == name_ver.get_name() && self.get_version() == name_ver.get_version()
+    }
 }
 
 impl Show for Package {
@@ -106,7 +116,7 @@ pub struct PackageSet {
 
 impl PackageSet {
     pub fn new(packages: &[Package]) -> PackageSet {
-        assert!(packages.len() > 0, "PackageSet must be created with at least one package")
+        //assert!(packages.len() > 0, "PackageSet must be created with at least one package")
         PackageSet { packages: Vec::from_slice(packages) }
     }
 
index d04ecfd72eb59b9e8d209b28077bf42f2e16fa82..733e5d91e1a34fff9d93216a4785e4561f074bd5 100644 (file)
@@ -22,7 +22,7 @@ pub fn compile_packages(pkg: &Package, deps: &PackageSet) -> CargoResult<()> {
 
     // Traverse the dependencies in topological order
     for dep in try!(topsort(deps)).iter() {
-        println!("Compiling {}", pkg);
+        println!("Compiling {}", dep);
         try!(compile_pkg(dep, &deps_target_dir, &deps_target_dir, false));
     }
 
index 509072f44cf4982ea146a5b9dd4d45e382a8c673..452b0e2e621e605f659aa9c17b64d4cced0f8faf 100644 (file)
@@ -41,10 +41,16 @@ impl Source for PathSource {
         Ok(())
     }
 
-    fn get(&self, _: &[NameVer]) -> CargoResult<Vec<Package>> {
+    fn get(&self, name_vers: &[NameVer]) -> CargoResult<Vec<Package>> {
         Ok(self.paths.iter().filter_map(|path| {
             match read_manifest(path) {
-                Ok(pkg) => Some(pkg),
+                Ok(pkg) => {
+                    if name_vers.iter().any(|nv| pkg.is_for_name_ver(nv)) {
+                        Some(pkg)
+                    } else {
+                        None
+                    }
+                }
                 Err(_) => None
             }
         }).collect())
index 59595a28195baa0510b59fc68f1f1053f61400bc..96cd19ab73ae315420dc86071f205a5a9ae8bf39 100644 (file)
@@ -213,7 +213,7 @@ impl Execs {
         match str::from_utf8(actual) {
           None => Err(format!("{} was not utf8 encoded", description)),
           Some(actual) => {
-            ham::expect(actual == out, format!("{} was `{}`\n other output:\n{}", description, actual, str::from_utf8(extra)))
+            ham::expect(actual == out, format!("{} was:\n`{}`\n\nexpected:\n`{}`\n\nother output:\n`{}`", description, actual, out, str::from_utf8(extra)))
           }
         }
       }
index d8cb6c331ef132520475ad6d2eb37d2d80cea926..b4d990590d9c05af69af5b48a1761977c59438d0 100644 (file)
@@ -64,7 +64,7 @@ test!(cargo_compile_with_invalid_code {
     assert_that(p.cargo_process("cargo-compile"),
         execs()
         .with_status(101)
-        .with_stderr(format!("src/foo.rs:1:1: 1:8 error: expected item but found `invalid`\nsrc/foo.rs:1 invalid rust code!\n             ^~~~~~~\nfailed to execute: `rustc src/foo.rs --crate-type bin --out-dir {} -L {}`", target.display(), target.display()).as_slice()));
+        .with_stderr(format!("src/foo.rs:1:1: 1:8 error: expected item but found `invalid`\nsrc/foo.rs:1 invalid rust code!\n             ^~~~~~~\nfailed to execute: `rustc src/foo.rs --crate-type bin --out-dir {} -L {}`", target.display(), target.join("deps").display()).as_slice()));
 })
 
 test!(cargo_compile_with_warnings_in_the_root_package {